C语言:feof函数的坑 您所在的位置:网站首页 错误使用feof 文件标识符无效的原因有哪些 C语言:feof函数的坑

C语言:feof函数的坑

2024-07-06 09:17| 来源: 网络整理| 查看: 265

目录 引言feof()函数

引言

做课设的时候踩到这个坑,跟大家分享一下

feof()函数

看一下下面的代码

#include int main() { FILE *fp = fopen("try", "w"); if (feof(fp) == 1) puts("文件已结束"); else puts("文件未结束"); return 0; }

输出:文件未结束 照理说,w参数打开的文件里面应该只有EOF才对啊,为什么会返回0呢?

查阅资料后:

feof函数 检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值)

int feof(FILE *stream);

注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

原来出错的原因在这里,建议改成如下形式:

#include int main() { FILE *fp = fopen("try", "w"); char temp[50]; if (fread(temp, sizeof(temp), 1, fp) != 1) puts("文件已结束"); else puts("文件未结束"); return 0; }

输出:文件已结束 直接利用读文件函数的返回值来判断是否到达结尾。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有